Memory devices can include internal, semiconductor, integrated circuits in computers or other electronic devices. There are many different types of memory including random-access memory (RAM), read only memory (ROM), dynamic random access memory (DRAM), static RAM (SRAM), synchronous dynamic RAM (SDRAM), and flash memory.
Flash memory devices have developed into a popular source of non-volatile memory for a wide range of electronic applications. Flash memory devices typically use a one-transistor memory cell that allows for high memory densities, high reliability, and low power consumption. Common uses for flash memory include personal computers, personal digital assistants (PDAs), digital cameras, and cellular telephones. Program code and system data such as a basic input/output system (BIOS) are typically stored in flash memory devices for use in personal computer systems.
During a typical prior art programming operation of a flash memory cell, a selected word line coupled to the selected memory cell to be programmed is biased with a series of incrementing voltage programming pulses that start at an initial voltage that is greater than a predetermined programming voltage (e.g., approximately 16V). The programming pulse increases a charge level, thereby increasing the cell's threshold voltage Vt, on a floating gate of the memory cell.
A verify operation is performed after each programming pulse to determine if the cell's threshold voltage has increased to the target program level. FIG. 1 shows typical programming and program verify pulses. The programming pulses 101, 102 are incrementally increasing voltage pulses that start at a certain programming voltage (e.g., 16V) and increase by a step voltage 104 for every subsequent programming pulse. The programming pulses bias the selected word lines being programmed and are repeated until the memory cells being programmed pass a program verify operation. Each programming pulse increases the threshold voltage of the selected memory cells.
A verify pulse 100, 103 is typically a ramp voltage that biases the selected word lines between each programming pulse. The memory cells on the selected word line turn on when the ramp voltage reaches the threshold voltage to which the cells have been programmed. A current flows on the bit lines coupled to the memory cells being programmed when the memory cells turn on. This current flow is detected by sense amplifiers that indicate to comparison circuitry that a comparison operation should be performed to determine if the data stored in the memory cell is equal to the target data.
One problem with this method of program verification is that it does not take into account when the memory cell has been over-programmed. Over-programming results from a memory cell being under-programmed after one program pulse and the next program pulse causes the cell's threshold voltage to exceed the target threshold voltage.
FIG. 8 illustrates a typical prior art programming operation with L0-LN programming levels. It is assumed that L4 is the target Vt 801. As the memory cell is being programmed, its threshold voltage is incremented in programming steps 803 towards the target Vt 801. When the threshold voltage is substantially close 805 to L4, the equal-to comparator inhibits further programming.
Since the prior art program verification relies only on the target threshold voltage and the programmed threshold voltage being substantially equal to each other, once the cell's threshold voltage exceeds the target range that depends on how many bits are being compared, the two can no longer be equal and the selected memory cell continues to fail program verify operations. This results in additional programming pulses being issued to the memory cell thus resulting in runaway programming of that memory cell. The runaway programming is illustrated in FIG. 9.
The of the programming levels L0-LN, L4 is again assumed to be the target 901 programming level. The memory cell is programmed in larger threshold voltage programming steps 903. The threshold voltage step 907 prior to the L4 target does not quite reach the target threshold voltage 901. Thus, the next programming operation moves the threshold voltage past the L4 target. Another verify operation with an “equal-to” comparator at this point results in the threshold voltage being found not to be equal to the target threshold voltage. Programming of the memory cell continues, even though the threshold voltage is past the target 901 voltage, since the verify operation failed the “equal-to” comparison.
One method for reducing runaway programming is to use smaller incremental increases of the programming pulses from one programming pulse to the next. However, this results in degraded performance since the programming would require more time to reach the target threshold voltage.
For the reasons stated above, and for other reasons stated below that will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art to reduce runaway programming of memory cells.